SQL Server এ Constraints হলো ডেটাবেসে ডেটার অখণ্ডতা এবং সঠিকতা নিশ্চিত করার জন্য ব্যবহৃত নিয়মাবলী। এগুলি টেবিলের কলামগুলোর উপরে বিভিন্ন বিধি বা শর্ত আরোপ করে, যাতে ডেটাবেসে অবৈধ বা অপ্রত্যাশিত ডেটা প্রবাহিত না হয়। SQL Server এ বিভিন্ন ধরনের কনস্ট্রেইন্ট রয়েছে, যেমন CHECK, DEFAULT, এবং UNIQUE, যা বিভিন্ন ধরণের ডেটা সঠিকতা ও নিয়মবদ্ধতা নিশ্চিত করতে ব্যবহৃত হয়।
এই টিউটোরিয়ালে CHECK, DEFAULT, এবং UNIQUE কনস্ট্রেইন্ট ব্যবহার করার পদ্ধতি এবং উদাহরণ নিয়ে আলোচনা করা হবে।
1. CHECK Constraint
CHECK কনস্ট্রেইন্ট ব্যবহার করা হয় একটি কলামের মানের জন্য একটি শর্ত আরোপ করতে, যাতে সেই কলামে শুধুমাত্র নির্দিষ্ট মান বা শর্ত পূর্ণকরা ডেটা প্রবাহিত হয়।
1.1. CHECK কনস্ট্রেইন্ট ব্যবহার
- CHECK কনস্ট্রেইন্ট সাধারণত একটি নির্দিষ্ট শর্ত বা এক্সপ্রেশন দিয়ে থাকে, যা কেবলমাত্র শর্ত পূর্ণ হলে ডেটা প্রবাহিত হতে দেয়।
- এটি numeric, date, text ইত্যাদি ডেটা টাইপের জন্য শর্ত আরোপ করতে ব্যবহৃত হয়।
উদাহরণ:
ধরা যাক, আপনি একটি Employee টেবিল তৈরি করছেন এবং কর্মীর Salary শুধুমাত্র ১০,০০০ বা তার বেশি হওয়া উচিত। তাহলে CHECK কনস্ট্রেইন্ট ব্যবহার করে এটি নিশ্চিত করা যাবে।
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(100),
Salary DECIMAL(10, 2),
CONSTRAINT chk_salary CHECK (Salary >= 10000)
);
এখানে, chk_salary নামে একটি কনস্ট্রেইন্ট তৈরি করা হয়েছে যা Salary কলামের মান ১০,০০০ এর বেশি হতে হবে এমন শর্ত আরোপ করেছে।
2. DEFAULT Constraint
DEFAULT কনস্ট্রেইন্ট ব্যবহার করা হয় একটি কলামে ডিফল্ট মান সেট করার জন্য, যাতে যদি কোনও ডেটা ইনপুট না করা হয়, তবে স্বয়ংক্রিয়ভাবে একটি মান নির্ধারিত হয়। এটি তখন ব্যবহার হয় যখন ডেটাবেসে কোনো নির্দিষ্ট কলামে যদি মান না দেওয়া হয়, তখন সেটি স্বয়ংক্রিয়ভাবে একটি ডিফল্ট মান পায়।
2.1. DEFAULT কনস্ট্রেইন্ট ব্যবহার
- DEFAULT কনস্ট্রেইন্ট সাধারণত NULL অথবা empty values দেওয়ার পরিবর্তে একটি প্রাক-নির্ধারিত মান ব্যবহার করে।
- এটি সাধারণত text বা numeric ডেটা টাইপের জন্য ব্যবহৃত হয়।
উদাহরণ:
ধরা যাক, আপনি একটি Employees টেবিল তৈরি করছেন যেখানে কর্মীর HireDate কে ডিফল্ট ভাবে বর্তমান তারিখ দেয়া হবে যদি তারিখটি ইনপুট না দেওয়া হয়।
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(100),
HireDate DATETIME DEFAULT GETDATE()
);
এখানে, HireDate কলামে কোনো মান ইনপুট না দিলে, তা স্বয়ংক্রিয়ভাবে GETDATE() ফাংশন ব্যবহার করে বর্তমান তারিখে পূর্ণ হবে।
3. UNIQUE Constraint
UNIQUE কনস্ট্রেইন্ট ব্যবহার করা হয় একটি কলামের মধ্যে ডুপ্লিকেট মান প্রবাহিত হওয়া বন্ধ করতে। এটি নিশ্চিত করে যে একটি টেবিলের নির্দিষ্ট কলামে প্রতিটি মান অনন্য (unique) হবে।
3.1. UNIQUE কনস্ট্রেইন্ট ব্যবহার
- UNIQUE কনস্ট্রেইন্ট কলামের ডেটার মধ্যে পুনরাবৃত্তি এড়াতে ব্যবহৃত হয়।
- এটি টেবিলের একাধিক কলামেও প্রয়োগ করা যেতে পারে, যেখানে সব কলামের সম্মিলিত মান অনন্য হতে হবে।
উদাহরণ:
ধরা যাক, আপনি একটি Employees টেবিল তৈরি করছেন যেখানে EmployeeEmail কলামটি অনন্য হতে হবে, যাতে কোনো দুই কর্মীর একই ইমেইল ঠিকানা না থাকে।
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(100),
EmployeeEmail NVARCHAR(100) UNIQUE
);
এখানে, EmployeeEmail কলামে UNIQUE কনস্ট্রেইন্ট ব্যবহার করা হয়েছে, যাতে প্রতিটি ইমেইল অ্যাড্রেস টেবিলের মধ্যে একাধিকবার না আসে।
3.2. Multiple Columns Unique Constraint:
একাধিক কলামের সম্মিলিত মান অনন্য করতে UNIQUE কনস্ট্রেইন্ট ব্যবহার করা যেতে পারে।
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(100),
DepartmentID INT,
Email NVARCHAR(100),
CONSTRAINT unique_employee_email UNIQUE (Email, DepartmentID)
);
এখানে, Email এবং DepartmentID কলামগুলোর সম্মিলিত মান অনন্য হতে হবে।
4. Constraints এর সংক্ষিপ্ত পরিচিতি
- CHECK Constraint: এটি ডেটাবেসে একটি নির্দিষ্ট শর্ত আরোপ করে যা কলামের মান যাচাই করে। উদাহরণস্বরূপ, একটি বয়সের কলামে ১৮ বছরের নিচে মান থাকতে পারবে না।
- DEFAULT Constraint: এটি কলামে কোনো মান ইনপুট না দেওয়া হলে একটি ডিফল্ট মান প্রযোজ্য করে। উদাহরণস্বরূপ, HireDate কলামে ডিফল্ট মান হিসাবে বর্তমান তারিখ সন্নিবেশিত হবে।
- UNIQUE Constraint: এটি কলামের মধ্যে ডুপ্লিকেট মান প্রবাহিত হওয়া বন্ধ করে। উদাহরণস্বরূপ, Email কলামে ডুপ্লিকেট ইমেইল থাকতে পারবে না।
Conclusion
CHECK, DEFAULT, এবং UNIQUE কনস্ট্রেইন্ট SQL Server ডেটাবেসে ডেটা অখণ্ডতা নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। সঠিকভাবে এই কনস্ট্রেইন্টগুলি ব্যবহার করে আপনি আপনার ডেটাবেসের ডেটাকে আরও নিরাপদ, সঠিক এবং পারফর্ম্যান্ট রাখতে পারবেন।
Read more